package com.sojson.controller.po.param.verify;

import com.sojson.entity.po.Ad;
import com.sojson.enums.EAdContentType;
import com.sojson.enums.EAdIsForever;
import com.sojson.result.Result;
import com.sojson.util.StringUtil;

/**
 * 广告位表控制器参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class AdParamVerify {

    /**
     * 单条插入
     * 
     * @param ad
     * @return
     */
    public static Result<?> insert(Ad ad) {
        if (StringUtil.isBlank(ad.getTitle())) {
            return Result.fail("广告标题不能为空！");
        }
        if (StringUtil.isBlank(ad.getPositionId())) {
            return Result.fail("所属广告位不能为空！");
        }
        Integer contentType = ad.getContentType();
        if (StringUtil.isBlank(contentType)) {
            return Result.fail("内容类型不能为空！");
        }
        if (StringUtil.isBlank(ad.getContent())) {
            return Result.fail("广告内容不能为空！");
        }
        if (contentType != EAdContentType.SHOW.getCode()) {
            if (StringUtil.isBlank(ad.getUrl())) {
                return Result.fail("广告位链接不能为空！");
            }
            if (StringUtil.isBlank(ad.getUrlType())) {
                return Result.fail("链接类型不能为空！");
            }
        }
        if (StringUtil.isBlank(ad.getSortNum())) {
            ad.setSortNum(100);
        }
        Integer isForever = ad.getIsForever();
        int code = EAdIsForever.NO.getCode();
        if (StringUtil.isBlank(ad.getIsForever()) || isForever == code) {
            ad.setIsForever(EAdIsForever.NO.getCode());
            if (StringUtil.isBlank(ad.getStartTime())) {
                return Result.fail("有效期开始时间不能为空！");
            }
            if (StringUtil.isBlank(ad.getEndTime())) {
                return Result.fail("有效期结束时间不能为空！");
            }
        }

        return Result.success();
    }

    /**
     * 通过id更新(局部更新)
     * 
     * @param ad
     * @return
     */
    public static Result<?> updatePartialById(Ad ad) {
        if (StringUtil.isBlank(ad.getId())) {
            return Result.fail("ID不能为空！");
        }
        Integer isForever = ad.getIsForever();
        int code = EAdIsForever.NO.getCode();
        if (StringUtil.isBlank(ad.getIsForever()) || isForever == code) {
            ad.setIsForever(EAdIsForever.NO.getCode());
            if (StringUtil.isBlank(ad.getStartTime())) {
                return Result.fail("有效期开始时间不能为空！");
            }
            if (StringUtil.isBlank(ad.getEndTime())) {
                return Result.fail("有效期结束时间不能为空！");
            }
        }

        return Result.success();
    }

}